<?php

namespace app\common\model\Product;

use think\Model;
// 引入软删除
use traits\model\SoftDelete;
use app\common\model\Expressquery;

/**
 * 商品订单模型
 */
class Order extends Model
{
  //使用软删除
  use SoftDelete;
  //设置软删除字段
  protected $deleteTime = 'deletetime';
  // 设置当前模型对应的完整数据表名称
  protected $table = 'pre_order';

  protected $autoWriteTimestamp = true;

  protected $createTime = 'createtime';

  protected $updateTime = false;

  protected $append = [
    'status_array', //商品所有状态
    'status_text', //商品状态信息
    'express_text', // 快递公司名称
  ];

  public function getStatusArrayAttr($value, $data)
  {
    $status =  [
      '0' => '未支付',
      '1' => '已支付',
      '2' => '已发货',
      '3' => '已收货',
      '4' => '已完成',
      '-1' => '仅退款',
      '-2' => '退款退货',
      '-3' => '售后中(待退货)',
      '-4' => '审核成功',
      '-5' => '审核失败'
    ];
    return $status;
  }

  public function getStatusTextAttr($value, $data)
  {

  /*   $statusText='';
    $statusArray = $this->status_array;//拿到status_array自定义字段
    foreach ($statusArray as $key => $value) {
      if ($key == $data['status']) {
        $statusText= $value;
      }
    }

    return $statusText; */
    $status = (empty($data['status']) && !is_numeric($data['status']) == true) ? null :  $data['status'];

    switch ($status) {
        case '0':
            return '待支付';
        case '1':
            return '待发货';
        case '2':
            return '待收货';
        case '3':
            return '待评价';
        case '4':
            return '已完成';
        case '-1':
            return '仅退款';
        case '-2':
            return '退款退货';
        case '-3':
            return '售后中';
        case '-4':
            return '退款成功';
        case '-5':
            return '退款失败';
    }
  }

  public function getExpressTextAttr($value, $data)
  {

      $expressid = empty($data['expressid'])  ? null :  $data['expressid'];

      $name = Expressquery::where('id', $expressid)->value('name');

      return $name;
  }


  // 关联查询用户表
  public function business()
  {
    return $this->belongsTo('app\common\model\Business\Business', 'busid', 'id');

  }
  // 关联查询物流公司表
  public function expressquery()
  {
    // belongsTo 相应关联查询
    //     第一个参数 model => 需要关联模型
    //     第二个参数 foreignKey => 外键
    //     第三个参数 locaKey => 主键
    //     第四个参数 alias => 模型别名
    //     第五个参数 joinType => 链表查询（LEFT，INNER，RIGHT）
    // setEagerlyType 设置预载入方法
    //     0 => JOIN查询
    //     1 => IN查询

    return $this->belongsTo('app\common\model\Product\Expressquery', 'expressid', 'id');
  }
}
